package Leetcode;


/**
 * headA的不相交长度加A与B的相交长度再加上headB的长度
 * headB的不相交长度加A与B的相交长度再加上headA的长度
 * 从头开始遍历，当l1和l2相等时的点就是相交节点
 * 给你两个单链表的头节点 headA 和 headB ，请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点，返回 null 。
 */
public class test160getIntersectionNode {


    public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
          ListNode l1=headA;
          ListNode l2=headB;
          //终止条件就是他们会和或者同时到终点
          while(l1!=l2){
              if (l1==null){
                  //当l1为空时，就接着走headB
                  l1=headB;
              }else{
                  l1=l1.next;
              }
              if (l2==null){
                  //当l2为空时，就接着走headA
                  l2=headA;
              }else{
                  l2=l2.next;
              }
//              此处使用三目运算符简化过程
//             l1=l1=null?headB:l1.next;
//             l2=l2=null?headA:l2.next;
          }
          return l1;
    }
}
